<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>测试Timer</title>
<!-- <script src="jquery-1.7.1.min.js"></script> -->
<script src="Timer.js"></script>
<style>
* {
	box-sizing: border-box;
}
.con {
	width: 400px;
	height: 300px;
}
</style>
</head>

<body>
	
	<input type="button" value="start" onclick="start()">
	<input type="button" value="stop" onclick="stop()">
	<input type="button" value="pause" onclick="pause()">
	<input type="button" value="resume" onclick="resume()">
	<input type="button" value="reset" onclick="reset()">
	<input type="button" value="getInfo" onclick="getInfo()">
	<input type="button" value="destroy" onclick="destroy()">
	<input type="button" value="updateOptions" onclick="updateOptions()">
	
	<div id="con" class="con">
		<ul id="con_ul" class="fs">
			<li>0</li>
			<li>1</li>
			<li>2</li>
			<li>3</li>
			<li>4</li>
		</ul>
	</div>
<script>

var timer = null;

window.onload = function() {
	/**
	 * 初始化Timer
	 * @param options 参数
	 * 		type：'interval',	//Timer类型：timeout | interval。默认interval
	 * 		delay：1000,		//时间间隔，单位：毫秒。默认1000毫秒(1秒)
	 * 		loop：-1,			//循环次数。默认：-1 表示无限循环
	 * 		name：'timer_'+parseInt(Math.random()*1000000000000),	//Timer的名字，默认值'timer_10位随机数'
	 * 		debug：false,		//调试输出开关，设为true时将会在控制台里打印输出日志信息。默认false
	 * 		startOnInit：false,	//是否在初始化后就启动。默认false
	 * @param runFunc 每次调用执行的方法（function或者string）
	 * @param completeFunc 循环执行完毕后的回调函数（function或者string）
	 * @returns {object} Timer对象
	 */
    timer = new Timer({
		type: 'interval',//Timer类型：timeout | interval。默认interval
		delay: 1000,//时间间隔，单位：毫秒。默认1000毫秒(1秒)
		loop: 10,//循环次数。默认：-1 表示无限循环
		name: 'myTimer',//Timer的名字
		//debug: false,//调试输出开关，设为true时将会在控制台里打印输出日志信息。默认false
		//startOnInit: false,//是否在初始化后就启动
	}, 
	//"run(timer)", 
	"run(++count)", 
	runOver
	);
};

var count = 0;

//运行一次的回调方法
//function run(tm) {//传入timer对象
//	console.info("\t run() c="+tm.runCount);
//	var ul = $("#con").children("ul").first();
//	var li = ul.find("li");
//	ul.append("<li>run "+tm.runCount+"</li>");
//	console.info("li "+(li.length)+" is added!");
//	
//	if((tm.runCount+1) %5 == 0) {
//		console.info("\talready runned for "+(tm.runCount+1)+" times!");
//	}
//}
function run(c) {//传入count计数
	console.info("\trun() c="+c);
	var ul = document.getElementById("con_ul");
	var li = document.createElement("li");
	li.innerText = "run "+c;
	ul.append(li);
	console.info("li is added!");
	
	if(c % 5 == 0) {
		console.info("#### already runned for "+c+" times!");
	}
}
//运行完毕的回调方法
function runOver() {
	console.info("runOver.");
}
//开始运行timer
function start() {
	timer.start();
}
//停止运行timer
function stop() {
	timer.stop();
}
//暂停timer
function pause() {
	timer.pause();
}
//继续运行timer
function resume() {
	timer.resume();
}
//重置timer
function reset() {
	timer.reset();
}
//销毁timer
function destroy() {
	timer.destroy();
	timer = null;
}
//获取runTime
function getInfo() {
	console.info("Timer ["+timer.getName()+"] running: "+timer.isRunning()+", runTime: "+timer.getRunTime()+", runCount="+timer.getRunCount());
}
//更新参数
function updateOptions() {
	//timer.stop();
	//timer.reset();
	timer.runCount = 0;
	timer.updateOptions({
		type: 'timeout',
		delay: 500,
		loop: 20,
	});
}

</script>
	
</body>
</html>